home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Inside!
/
Amiga FD Inside (1995)(Ultramax).iso
/
forumamiga
/
ausgabe15
/
texte
/
basic-kurs
< prev
next >
Wrap
Text File
|
1993-08-27
|
5KB
|
120 lines
BASIC-KURS IM FA 15: SCREENS UND WINDOWS IN AMIGABASIC (II)
===========================================================
Nachdem ich im letzten FA die Screens- und Window-Grundfunktionen beschrieben
habe, geht´s heute etwas tiefer in die Materie.
Kurz zur Wiederholung:
Die im letzten FA besprochenen Befehle waren
SCREEN Nummer,Breite,Höhe,Tiefe,Auflösung
(öffnet einen Screen)
SCREEN CLOSE Nummer
(schließt einen Screen)
WINDOW Nummer,[[Titel],[(x1,y1)-(x2,y2)],[Typ],[Schirm]]
(öffnet Fenster)
WINDOW CLOSE Nummer
(schließt ein Fenster)
Für manche Programme ist es wichtig, bestimmte Informationen über das aktuel-
le Fenster abzufragen. Das ist dann der Fall, wenn bestimmte Fensterdaten vom
Benutzer verändert werden können (z.B. Größe oder aktuelles Fenster).
Dazu gibt es eine nützliche Funktion:
x=WINDOW(n)
n
gibt dabei die Information an, die gewünscht wird. Folgende Informationen
sind dabei möglich:
Für n=0 wird die Nummer des gewählen Fensters ausgegeben (bei OS1.3 erscheint
dieses nicht in Geisterschrift, bei OS2.0+ ist die Titelzeile dieses
Fensters die 3. Preferences-Farbe (auf der WB2.0 wäre das blau, auf
der WB1.3 gelb)).
Für n=1 wird die Nummer des aktuellen Ausgabefensters ausgegeben (in diesem
Fenster wirken alle Ausgabe-Anweisungen wie PRINT, LINE usw.). Die
Nummer des gewählten Fensters ist nicht unbedingt identisch mit dem
aktuellen Ausgabefenster!
Für n=2 wird die Breite des aktuellen Ausgabefensters ausgegeben.
Für n=3 wird die Höhe des aktuellen Ausgabefensters ausgegeben.
Für n=4 wird die X-Koordinate des aktuellen Ausgabefensters ausgegeben, auf
der das nächste Zeichen platziert wird.
Für n=5 wird die Y-Koordinate des aktuellen Ausgabefensters ausgegeben, auf
der das nächste Zeichen platziert wird.
Für n=6 wird die Zahl der erlaubten Farben des aktuellen Ausgabefensters aus-
gegeben (dies hängt vom Screen ab, auf dem sich das Fenster befindet;
auf dem WB-Screen sind das 4 Stück, durchnumeriert von 0 bis 3).
Für n=7 wird ein Zeiger auf die Intuition-WINDOW-Struktur des aktuellen Aus-
gabefensters ausgegeben.
Für n=8 wird ein Zeiger auf die Intuiton-Rastport-Struktur des aktuellen Aus-
gabefensters ausgegeben.
Beispiel 1:
WINDOW WINDOW(0)
macht das vom User gewählte Fenster zum aktuellen Ausgabefenster.
Beispiel 2:
h=WINDOW(3)
speichert in h die Höhe des aktuellen Ausgabefensters.
Beispiel 3:
->
a=WINDOW(1)
WINDOW WINDOW(0)
b=WINDOW(2)
h=WINDOW(3)
WINDOW a
<-
Dieses Programm speichert die Nummer des aktuellen Ausgabefensters in der Va-
riablen a (Zeile 1), macht das gewählte Fenster zum aktuellen Ausgabefenster
(2), berechnet dessen Breite und Höhe (3,4) und macht das ehemals aktuelle
Ausgabefenster wieder zum aktuellen Ausgabefenster (5). So kann man die Daten
des gewählten Fensters erhalten, ohne dabei die Daten des aktuellen Ausgabe-
fensters zu verlieren.
Kommen wir nun zu einer weiteren Funktion:
WINDOW OUTPUT n
Dabei ist n die Nummer des Fensters.
Mit dieser Funktion macht man das Fenster zum aktuellen Ausgabefenster, holt
es aber nicht in den Vordergrund!
Diese Funktion kann v.a. dazu benutzt werden, um beispielsweise auf einem 2.
Screen ein Bild zeichnen zu lassen und es erst später auf dem Bildschirm er-
scheinen lassen (wenn´s fertig ist).
Nehmen wir mal an, es existiert bereits ein Fenster Nummer 1 auf dem Work-
bench-Screen. Man muß nun einen 2. Screen und darauf ein Fenster öffnen. Da-
nach holt man Fenster 1 in den Vordergrund und macht Fenster 2 wieder zum
Ausgabefenster. Dort wird das Bild dann gezeichnet und in den Vordergrund
geholt.
->
SCREEN 2,640,256,2,2 ' öffnet einen 2. Screen
WINDOW 2,"Neues Fenster",,31,2 ' öffnet ein neues Fenster auf Screen 2
WINDOW 1 ' holt Fenster 1 in den Vordergrund
WINDOW OUTPUT 2 ' macht Fenster 2 zum Ausgabefenster
' hier folgt dann die Bild-Zeichen-Routine (z.B. GOSUB BildMalen)
WINDOW 2 ' holt Fenster 2 in den Vordergrund
<-
Bevor ich nun diesen Teil des Basic-Kurses beenden werde, möchte ich noch
auf eine Kleinigkeit (?!) eingehen.
Wie Ihr sicherlich bemerkt habt, bietet die WINDOW(n)-Funktion keine Möglich-
keit, die Koordinaten der linken oberen und rechten unteren Bildschirmecke
zu erhalten. Dies kann aber mittels der Adresse aus der WINDOW(7)-Funktion
machen. Folgendes Beispielprogramm zeigt wie:
->
fen&=WINDOW(7) ' holt die Fensteradresse
x=PEEKW(fen&+4) ' x-Koordinate der linken oberen Bildschirmecke
y=PEEKW(fen&+6) ' y-Koordinate der linken oberen Bildschirmecke
<-
Das wäre soweit alles, was ich zu diesem Thema sagen wollte. Ich könnte zwar
noch einiges sagen, was aber - wie ich meine - nicht sooo viel nützen würde.
Falls irgendjemand aber noch etwas bestimmtes wissen will, kann er gerne im
FA fragen. Ich werde versuchen, das dann (wenn möglich) zu beantworten.
Dieser Teil des Basic-Kurs ist © 8/1993 by Stefan Grad. Er ist exklusiv für
das FORUM AMIGA. Andersweitige Verbreitung erst nach meiner schriftlichen
Genehmigung. Die LISTINGS können gerne in eigene Programme übernommen werden,
jedoch wäre ein Hinweis auf das FORUM AMIGA und diesen Kurs ganz nett...